const router = require("koa-router")();
const loginCheck = require("../middleware/loginCheck")
router.prefix("/demo");

// 获取GET请求的参数
router.get("/query", async (ctx, next) => {
    ctx.body = {
        function: "获取请求参数",

        // 获取GET参数
        query: ctx.request.query,
    };
});

// 被服务器设置cookie
router.get("/cookie", async (ctx, next) => {
    // 给客户端设置cookie
    ctx.cookies.set("username", "nimei", {
        // 设置10秒有效
        expires: new Date(Date.now() + 10 * 1000),
        // 尽在/demo下有效
        path: "/demo",
    });
    ctx.body = {
        function: "被服务器设置cookie",
    };
});

// 被服务器设置cookie
router.get("/session", async (ctx, next) => {
    // 将用户的信息存储在session中
    ctx.session.username = "nimei123";
    ctx.body = {
        function: "被服务器设置session",
    };
});

// 被服务器设置cookie
router.get("/readsession", loginCheck, async (ctx, next) => {
    console.log("/readsession ctx",ctx);
    ctx.body = {
        function: "访问session",

        // 读取session
        session: ctx.session.username,
    };
});

/* 文件上传 */
// 引入multer
const multer = require("koa-multer");
// const loginCheck = require("../middleware/loginCheck");

// 配置存储方式
const storage = multer.diskStorage({
    //文件保存路径
    destination: function (req, file, cb) {
        cb(null, "public/uploads/"); //注意路径必须存在
    },
    //修改文件名称
    filename: function (req, file, cb) {
        // file.originalname上传的文件的原始名称
        var fileFormat = file.originalname.split(".");

        // 以时间戳+文件名后缀的形式存储用户上传的文件
        cb(null, Date.now() + "." + fileFormat[fileFormat.length - 1]);
    },
});

// 得到上传工具
const upload = multer({ storage: storage });

/* 单文件上传 */
// face对应着前端的上传文件的input中的name属性
router.post("/upload", upload.single("img0"), async (ctx, next) => {
    // 上传成功后返回一些信息给客户端
    ctx.body = {
        filename: ctx.req.file.filename, //返回文件名
        body: ctx.req.body,
    };
});

/* 多文件上传 */
router.post(
    "/mupload",

    // 指定客户端的多个input框中的name
    // 此处设置每个input最多可以上传10个文件
    upload.fields([
        { name: "img0", maxCount: 10 },
        { name: "img1", maxCount: 10 },
    ]),

    async (ctx) => {
        console.log(ctx.req.files);
        ctx.body = {
            filenames: ctx.req.files, //返回文件名
            body: ctx.req.body, //前端表单支持key-value + key-file
        };
    }
);

module.exports = router;
